package cn.tedu.oop2;
/**本类用于练习多态的使用
 * 多态，使用的是父类的局部变量*/
public class TestCar {
    public static void main(String[] args) {
        //10.创建纯纯的父类对象
        Car c=new Car();
        System.out.println(c.getBrand());
        c.start();
        c.stop();
//        c.swim();//报错，父类对象不可以调用子类的特有功能
        //12.创建纯纯的子类对象
        BMW b=new BMW();
        b.setColor("2");
        System.out.println(b.getColor());
        System.out.println(b.color);
        b.start();
        b.stop();
        //13.创建多态对象进行测试
        Car c2=new TSL();
        System.out.println(c2.getColor());
        c2.start();
        c2.stop();
//        c2.swim();//多态对象把自己看成父类型


    }
}
class Car{
    //1.通过分析，抽象形成一个汽车类Car
    // 2.定义并封装汽车类的属性--成员变量
    // brand color id price
    private String brand;
    private String color;
    private int id;
    private double price;
    //4.定义功能
    public void start(){
        System.out.println("我的小车车启动啦~");
    }
    public void stop(){
        System.out.println("我的小车车停止啦~");
    }

    //3.给封装的属性提供get()和set()方法
    public String getBrand() {
        return brand;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }
}

//5.创建子类
class BMW extends Car{
    //6.定义子类属性
    String color="五彩斑斓的黑";

    @Override
    public void start() {
        System.out.println("都让开，我的车要起飞啦~");
    }
}
//8.创建子类2
class TSL extends Car{
    //9.重写父类的方法
    @Override
    public void stop() {
        System.out.println("诶呀妈呀，怎么停不下来呢");
    }
    //10.添加子类的特有方法
    public void swim(){
        System.out.println("没想到吧，我还是个潜水艇~");
    }
}